搜索 K
Appearance
博客正在加载中...
Appearance
本文讲解下 Spring 和 SpringBoot 之间的区别和联系,而且我们要学好 SpringBoot,我们也应该对 Spring 的整个生态圈有所了解。
我们之前学习 Spring 的时候,或多或少知道 IoC 和 AOP 的概念,以及 SpringMVC 能快速开发一个 web 应用,这些其实就是我们所说的 Spring Framework 的基本功能。
从宏观上来说,Spring 指的是 Spring 的整个生态圈,其包含了很多的项目,每个项目都是一套解决方案(能解决特定的问题),我们可以看看 官网 的图,有这么多项目:
那么 Spring 能做什么呢?同理,看官网的图:
但是这也有问题:项目太多了!如果我们想要使用几个 Spring 生态圈中的项目,很容易陷入到一个叫“配置地狱”的情况,例如光整合 SpringMVC 要写一大堆配置。
Spring5 做出了一个重大的升级:响应式编程。下图展示了响应式编程的技术栈,与传统的 Servlet 技术栈之间的对比:
因此本课程分为 2 季,第一季就是掌握右边的技术栈,第二套就是左边的技术栈
同时,Spring 是基于 Java8 的,也采用了 Java8 的一些新特性,如接口默认实现。
例如一个接口,可能有上百个方法;
而我们写一个类的时候,可能只想重写某一个方法,在 Java8 之前,其他方法我们都得实现(即使是空方法,也要实现)
Java8 之后,我们可以在接口里定义默认实现,一个类实现该接口的时候,只需重写需要的方法即可。
而 SpringBoot 能解决“配置地狱”发问题。我们可以认为 SpringBoot 是一个框架的框架,其底层是基于 Spring Framework;当我们想要使用某个 Spring 的项目(例如 SpringMVC),只需简单引入一个配置就行,我们只需关注业务逻辑,非常方便。
就好比一台电脑包含了很多的硬件:CPU,内存,显卡,硬盘等(就好比 Spring 生态圈的一个个项目)
如果我们自己组装电脑,是非常麻烦的(比如整合 SpringMVC,要写很多很多的配置)
我们需要的是一个装好的电脑(这就是 SpringBoot 的作用)
在 文档 也有这样一段话:
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".
大意:SpringBoot 可以很简单的创建一个独立的、生产级别的应用,开箱即用。
还介绍了 SpringBoot 的特点(特点):
介绍了 SpringBoot 是什么后,我们可以说下其背景,也就是微服务和分布式
James Lewis and Martin Fowler 在 2014 年就提出了微服务概念:Microservices Guide
In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.——James Lewis and Martin Fowler (2014)
这是一名博主的翻译:微服务 |YYGCui' s blog,大意如下:
当我们将一个大型应用拆分成很多个小应用之后,就会涉及到分布式问题:

例如上图,每一个点就是一个小的应用,每个应用之间可能有互相调用(用一根线来连接),那么随着系统规模的增加,小应用之间的关系会变的非常非常复杂。有如下问题需要考虑:
第一个是 SpringBoot,我们使用 SpringBoot 快速创建微服务项目
第二个是 SpringCloud,我们使用 SpringCloud 将微服务连接起来
第三个是 SpringCloud DataFlow,也就是应用之间的响应式数据流
我们最后还是将应用部署到服务器上的,此时就涉及到原生应用如何上云
上云的困难
解决方案:云原生(Cloud Native)
学习的时候离不开文档:
我们不会讲解文档的所有内容,挑着讲
官网文档架构

还可以下载离线文档(pdf 版本):
本教程也将该文档上传至了 Gitee 或 GitHub 项目中,强烈建议下载下来,后续会经常用到。
SpringBoot 是开源的,源码可以在 GitHub 上看到:spring-projects/spring-boot
每次版本更新的内容,也可以在 GitHub 上看到:Home · spring-projects/spring-boot Wiki
本次教程使用的 SpringBoot 版本和视频保持一致:2.3.4
SpringBoot 是整合 Spring 技术栈的一站式框架
SpringBoot 是简化 Spring 技术栈的快速开发脚手架
当然,SpringBoot 也有缺点:迭代快,需要时刻关注变化;封装太深,内部原理复杂,不易精通